Cross Model Mapping
Creating Interactions
You may want to create interactions between content items (data discoveries, slicers, dynamic content, or custom formulations) that are querying different data models. For such interactions to work, the hierarchies and member elements being used as a filter must also exist in the data model of the target visualization.
If the corresponding hierarchies and member elements are identically labeled in both data models, then you can create an interaction as usual. However, if the corresponding hierarchies and/ or member elements are not identically labeled in each data model, then it's necessary to create a model mapping.
In such a scenario, the Model Mapping wizard is used to map the corresponding hierarchies and/ or member elements from the two data models, enabling the user to create interactions between them.
For instance, Model 1 may contain a date hierarchy called Date, while Model 2's date hierarchy is called dateKey. Say that a data discovery displaying Product Sales from Model 1 is added to the presentation, along with a dateKey slicer from Model 2. When launched in runtime, Pyramid will search for the given dateKey member in the target visualization; but because Model 1 doesn't contain a hierarchy called dateKey, the user will get an error.
To enable the interaction from the dataKey slicer to the Product Sales chart, the user must configure a new model mapping which tells Pyramid that the two differently labeled hierarchies are the same.
Using the Model Mapping Wizard
To access and use the Model Mapping Wizard:
- Open the Model Mapping wizard from the Data area of the Advanced Settings ribbon.
- Click the blue plus sign (red box) in the Mapping tab to create a new model mapping.
- The new mapping will be listed; from the Settings panel name the mapping (blue box) and select the two models to be mapped (orange box) (the selection order is not important).
- The Map Hierarchies panel will open; from the drop down under each model, select the hierarchy to be mapped (yellow box).
- To map multiple hierarchies from the same models, click the plus sign (purple box) in the Map Hierarchies panel.
- From the Map Members panel, select the mapping type: either Simple or Advanced (red box).
Ignore Unmapped Hierarchies
The models being mapped may contain multiple hierarchies that are similar, yet not identical. For instance, they may both contain hierarchies listing States, where the naming convention differs between the models. In this case, if you have no need to map these hierarchies, you can simply select the 'Ignore Unmapped Hierarchies' option. This will eliminate the injection of unmapped hierarchies, preventing errors when applying interactions between visuals from the mapped models.
Mapping Types
There are 2 types of model mapping: simple and advanced. The type that you will need to configure will depend on what differences exist between the hierarchies being mapped.
Simple Mapping
If the hierarchies to be mapped are labeled differently, but each corresponding member element is identically labeled, choose Simple.
For instance, say the country hierarchy in Model 1 is called Country, while in Model 2 it's called Location. Within both hierarchies, the members are labeled identically. In this case, choose Simple and select the hierarchy name type (either Unique Name or Caption).
Model 1 | Model 2 |
Country | Location |
Australia | Australia |
United States | United States |
Canada | Canada |
France | France |
Germany | Germany |
In this example, the Tabulation contains 2 queries: a Sales by Country grid (from Data Model 1), and a Net Profit by Product Categories chart (from Data Model 2). In Data Model 1, the hierarchy of countries is called "Country," while in Data Model 2 it's called "Location", as in the grid above. A country slicer is added from Data Model 1. So, to attach the slicer to the report from Data Model 2 , it's necessary to configure a model mapping.
Step 1
From the Advanced settings ribbon click Model Mapping (red box).
Step 2
From the Mapping panel in the wizard, click the plus sign to create a new mapping. Under Settings, name the new mapping and then select the data models to be mapped.
Determine whether or not to ignore unmapped hierarchies.
Step 3
From Map Hierarchies, click the plus sign to choose the hierarchies that should be mapped. You can add multiple hierarchy mappings here. Each hierarchy mapping should contain the two corresponding hierarchies from each of the given models.
Step 4
Select the type of mapping; if the hierarchies have different names, but the members within them are the same, choose Simple. If the members within the hierarchies are labeled differently, choose Advanced. Click Apply.
Advanced Mapping
Advanced Mapping is required to map the member elements within two hierarchies, if the member elements are not identically labeled. In this case, the Advanced option must be selected in order to configure the dynamic functions required to map the differently labeled hierarchy members.
Click here to review the advanced mapping functions; for a detailed examples of advanced mapping for date hierarchies, review the MemberCaption function.
Model 1 | Model 2 |
Country | Location |
Australia | AUS |
United States | USA |
Canada | CAN |
United Kingdom | UK |
France | FRA |
Germany |
GER |
This example is based on the grid above, mapping 2 country hierarchies. The country hierarchy in Model 1 lists countries according to their full name, while in Model 2 they are abbreviated. Because the unique names within the hierarchies are different, an advanced model mapping is required. This allows you to configure a formula to determine which unique name in Model 1 corresponds to which unique name in Model 2.
Step 1
Follow steps 1-3 of the simple model mapping example above.
Then, from the Map Members panel choose the member type; in this example, the unique member names need to be mapped, so 'Unique Name' is selected. Then select 'Advanced' from the drop-down (green highlight below).
Step 2
Now the Advanced model mapping tools are shown; here you need to configure a formula to map the given hierarchies. There are two script windows here:
First Model > Second Model: configure the formula to allow interactions from the first model to the second model.
Second Model > First Model: write the formula that will enable interactions from the second model to the first model.
For each script window, you can click 'Designer' (green arrows) to open the Map Members designer, which features a full formula editor.
Step 3
Enter your formula in the relevant editor, using the functions and hierarchies trees (yellow highlight below) as required. At this stage, we are creating a mapping from the first model (which contains full country names) to the second model (which contains abbreviations).
Once the formula is entered, choose member from the drop-down below the script editor and click test (green highlight); a preview will appear in the preview window (blue highlight). Click OK to confirm your formula.
In this example, the formula below was added. Using the TargetMember and HierarchyUniqueName functions, a Case formula was built determining that if the MemberCaption of the given SourceMember is "United States", "USA" should be returned, while if the given MemberCaption is "United Kingdom", "UK" should be returned.
The Left function is used to determine that if any other MemberCaption is given, a substring of the first 3 characters in the string should be returned (eg. CAN, FRA, etc).
TargetMember().HierarchyUniqueName() + ".[" + Case(DataSet(SourceMember().MemberCaption()="United States", SourceMember().MemberCaption()="United Kingdom"), DataSet("USA", "UK"), Left(SourceMember().MemberCaption(), 3)) + "]"
Step 4
Next, a formula is created (if needed) to enable interactions from the second model to the first.
In this example, the formula below was added. Here, Case function was used to specify which caption should be returned for each of the given member captions. For instance, if "USA" is selected, "United States" should be returned.
TargetMember().HierarchyUniqueName() + ".[" + Case(DataSet(SourceMember().MemberCaption()="USA", SourceMember().MemberCaption()="UK", SourceMember().MemberCaption()="Aus", SourceMember().MemberCaption()="GER", SourceMember().MemberCaption()="CAN", SourceMember().MemberCaption()="FRA"), DataSet("United States", "United Kingdom", "Australia", "Germany", "Canada", "France"), "") + "]"
Step 5
Click Apply to confirm your model mapping.